package com.heima.article.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.dtos.ArticleCommentDto;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.ArticleHomeDto;
import com.heima.model.article.dtos.ArticleInfoDto;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.comment.dtos.CommentConfigDto;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.mess.ArticleVisitStreamMess;
import com.heima.model.wemedia.dtos.StatisticsDto;
import org.springframework.web.bind.annotation.RequestBody;

import java.io.IOException;
import java.util.Date;

public interface ApArticleService extends IService<ApArticle> {

    /**
     * 根据参数加载文章列表
     *
     * @param type 1为加载更多  2为加载最新
     * @param dto
     * @return
     */
    ResponseResult load(Short type, ArticleHomeDto dto);

    /**
     * 根据参数加载文章列表
     *
     * @param type      1为加载更多  2为加载最新
     * @param dto
     * @param firstPage true--首页   false--非首页
     * @return
     */
    ResponseResult load2(Short type, ArticleHomeDto dto, boolean firstPage);

    /**
     * 保存app端相关文章
     *
     * @param dto
     * @return
     */
    public ResponseResult saveArticle(@RequestBody ArticleDto dto);

    /**
     * 加载用户行为数据--数据回显
     *
     * @param dto
     * @return
     */
    ResponseResult loadArticleBehavior(ArticleInfoDto dto);

    /**
     * 更新文章分值
     * 更新缓存中的文章热点数据
     *
     * @param mess
     * @return
     */
    public void updateScore(ArticleVisitStreamMess mess);

    /**
     * 查询相应的文章信息
     *
     * @param dto
     * @return
     */
    public PageResponseResult findNewsComments(ArticleCommentDto dto);

    /**
     * 打开或关闭评论
     *
     * @param dto
     * @return
     */
    public ResponseResult updateCommentStatus(CommentConfigDto dto);

    /**
     * 查询喜欢和收藏数
     *
     * @param apUserId
     * @param beginDate
     * @param endDate
     * @return
     */
    public ResponseResult queryLikesAndConllections(Integer apUserId, Date beginDate, Date endDate);

    /**
     * 图文分页查询
     * @param dto
     * @return
     */
    public PageResponseResult newPage(StatisticsDto dto);
}